package com.nextel.project.util;

import com.nextel.project.usuario.ControlUsuario;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

import java.util.Timer;
import java.util.TimerTask;

import java.io.IOException;
import javax.microedition.lcdui.Font;

/**
 * Construye una pantalla que se visualiza por dos segundos y muestra una
 * imagen almacenada en una carpeta /img dentro de la raiz del paquete con el
 * nombre splash.png
 */
public class Splash extends Canvas {

    private Display display;
    private Displayable displayable;
    private Timer timer;
    private TimerSplash tm;
    private String imageName = "/img/splash.png";
    private String version = "1.0";

    /**
     * @param display el display donde se visualizara la imagen
     * @param displayable el displayable que se visualizara luego de los 2 segundos
     * que se muestre la imagen.
     */
    public Splash(Display display, Displayable displayable) {
        this.display = display;
        this.displayable = displayable;
    }

    public Splash(Display display, Displayable displayable, String pImageName, String pversion) {
        this.display = display;
        this.displayable = displayable;
        this.imageName = pImageName;
        this.version = pversion;
    }
    
    public Splash(Display display, String pImageName, String pversion) {
        this.display = display;
        this.displayable = null;
        this.imageName = pImageName;
        this.version = pversion;
    }

    protected void showNotify() {
        if (timer == null) {
            timer = new Timer();
            tm = new TimerSplash();
            timer.schedule(tm, 2000);
        }

    }

    protected void paint(Graphics g) {
        // LLenamos la pantalla de blanco para que parezca una pantalla distinta
        g.setColor(255, 255, 255);
        g.fillRect(0, 0, getWidth(), getHeight());

        try {
            // System.out.println("creando");
            Image img = Image.createImage(imageName);
            // System.out.println("creado");
            g.drawImage(img, getWidth() / 2, 10, Graphics.TOP | Graphics.HCENTER);

            g.setColor(0x000000);
            g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_SMALL));
            g.drawString("Versi\u00F3n: " + this.version, 1 * (getWidth() / 12), 9 * (getHeight() / 10), Graphics.BOTTOM | Graphics.LEFT);

        } catch (IOException ioex) {
            ioex.printStackTrace();
        }
    }

    private void terminarSplash() {
 
       display.setCurrent(displayable);

        destroyTimers();

    }

    //Clase TimerTask
    private class TimerSplash extends TimerTask {

        public final void run() {
            terminarSplash();
        }
    }

    protected void hideNotify() {
        destroyTimers();
    }

    private void destroyTimers() {
        if (tm != null) {
            tm.cancel();
            tm = null;
        }

        if (timer != null) {
            timer.cancel();
            timer = null;
        }
    }
}
